#ifndef __DICTPRODUCER_H__
#define __DICTPRODUCER_H__
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <unordered_set>
using std::vector;
using std::string;
using std::map;
using std::unordered_set;
using std::set;

class WordSegmentation;
class  DictProducer{
public:

    DictProducer(const string&dir,WordSegmentation&splitTool);


    void buildEnDict();//创建英文字典

    void buildCnDict();//创建中文字典

    void storeDict(const char*filepath);//将词典写入文件

    void showFiles()const;//查看文件路径，作为测试用

    void showDict()const;//查看词典，作为测试用

    void getFiles();    //获取文件的绝对路径

    void pushDict(const string&word); //存储某个单词
    
    void preprocessline(string&line);//对文件进行处理

    void buildIndex();//建立中英文索引

    size_t getByteNum_UTF8(const char byte);

    void outputIndex(const string&filename);//创建索引表

    void readstopwords(const string&filepath);//停用词集的集合


private:
      string _dir;//文件夹路径
      vector<string>_files;//语料库文件的绝对路径集合
      WordSegmentation&_splitTool;//分词工具
      map<string,int>_dict; //词典
      map<string,set<int>>_index;//索引
      unordered_set<string> _stopWord;//停用词集合
};
#endif
